package edu.hunau.cxb19.basic.class11;

import org.junit.Test;

/**
 *
 * @author hb
 *
 *         2020-02-21 15:16:48
 */
public class TestJunitDemo {

	/**
	 * 不能提供static关键字，返回值类型必须使用void，一个无参数的方法
	 */
	@Test
	public void testFei() {
		System.out.println(fei(40));
		
	}
	
	@Test
	public void testFeiFor() {
		System.out.println(feiFor(40));
	}

	/**
	 * 费氏数列： f1=1,f2=1,f(n)=f(n-1)+f(n-2)；(n>=2)
	 * 
	 * @return
	 */
	public static long fei(long n) {
		if (n == 1 || n == 2) {
			return 1;
		}

		return fei(n - 1) + fei(n - 2);
	}

	/**
	 * 使用for循环实现费氏数列
	 * 
	 * @param n
	 * @return
	 */
	public static long feiFor(long n) {
		if (n == 1 || n == 2) {
			return 1;
		}
		long f1 = 1;// 表示f(n-2)
		long f2 = 1;// 表示f(n-1)
		for (int i = 3; i <= n; i++) {
			f2 = f1 + f2;
			f1 = f2 - f1;
		}
		return f2;

	}

}
